iT邦幫忙

2023 iThome 鐵人賽

DAY 10
0
Mobile Development

30天React Native之旅:從入門到活用系列 第 10

Day 10:原生開發基礎知識補充

  • 分享至 

  • xImage
  •  

相信很多想嘗試React Native的是Web前端開發者,但對於Web前端開發者來說,可能會對原生APP開發相關文件、指令等等不太熟悉。本篇將介紹基本的原生開發相關知識。

Android 常用 adb 指令與打包

Android Debug Bridge (adb)。adb 是一個命令行工具。簡單來說,它是一個橋梁,讓你的開發機(電腦)能夠與 Android 設備或模擬器進行溝通。透過 adb,我們可以安裝應用、從裝置上取得文件、或查看裝置的各種日誌等。

  • 啟動和停止 adb 伺服器

    • adb start-server: 啟動 adb 伺服器。
    • adb kill-server: 停止正在運行的 adb 伺服器。有時adb與裝置的通信出現問題,重新啟動 adb 伺服器可能會解決問題。
  • 查看和管理設備

    • adb devices: 列出當前連接的所有 Android 設備和模擬器。
    • adb connect [IP地址]: 例如 adb connect 192.168.0.101 可以連接到指定 IP 地址的裝置。
    • adb disconnect: 斷開與特定裝置的連接。
  • 操作沙盒

    • adb shell: 在 Android 裝置或模擬器上執行命令的終端介面。
    • adb push [source] [destination]: 將文件從開發機推送到 Android 裝置或模擬器。
    • adb pull [source] [destination]: 從 Android 裝置或模擬器拉取文件到開發機。
  • 查看日誌

    • adb logcat: 顯示裝置或模擬器的日誌輸出。運行此命令時,會看到一個持續更新的列表,顯示裝置上的各種日誌訊息。
  • 打包Android應用

    • cd android && ./gradlew assembleRelease

iOS 常用指令

  • 模擬器列表與狀態

    • xcrun simctl list devices: 此命令會列出所有安裝的模擬器版本及其狀態。這可以幫助你確定哪些模擬器版本是可用的,以及哪些模擬器當前正在運行。
  • 快速啟動模擬器

    • open -a Simulator: 這是一個簡單實用的命令,可以快速啟動 iOS 模擬器。
  • 重置模擬器

    • xcrun simctl erase [DEVICE_ID]: 如果你想重置模擬器到其初始狀態(例如清除應用數據或設置),可以使用此命令,只需將 [DEVICE_ID] 替換為目標模擬器的 ID。
  • 查看已連接的 USB 設備

    • system_profiler SPUSBDataType: 顯示當前連接到 Mac 的所有 USB 設備的詳細資訊,包括 iPhone、iPad 等 iOS 設備。這在需要檢查裝置連接狀態時特別有用。
  • 清除 Xcode 快取

    • rm -rf ~/Library/Developer/Xcode/DerivedData: 清除 Xcode 在編譯或運行時生成的快取,有時可以解決某些編譯問題。

Android 原生文件初探

在 React Native 開發過程中,我們有時會遇到需要調整原生設定的情況。所以對基本的原生文件有所認識是非常必要的。

  • Androidmanifest.xml
    路徑:android/app/src/main/AndroidManifest.xml
    Android 的主配置文件,用於定義權限、使用的第三方套件和特定的應用配置。
    例如你可以在Androidmanifest.xml裡面看到這行,就是Internet存取權限,要增加其他配置也是類似寫法

     <uses-permission android:name="android.permission.INTERNET" />
    
  • android/build.gradle
    路徑:android/build.gradle
    定義:整個 Android 專案的根配置文件,不經常修改。
    應用場景:例如想要調整minSdkVersion版本,就可以在此文件更改。(minSdkVersion 是指應用支持的最低 Android 版本)

  • android/app/build.gradle
    路徑:android/app/build.gradle
    專屬於 App 的配置文件,如應用的版本、簽名設定、特定的依賴等。是我們較常修改的Android原生文件。

    • signingConfigs: App 簽名的設定。若需發布到 Play Store,需要設置簽名。
    • buildTypes:定義了構建配置的類型,例如 debug 和 release。開發時,我們使用 debug 類型;而當我們準備發布到 Play Store 時,我們使用 release 類型。以下是該部分的一個例子:

    一般我們使用 npx react-native run-android 命令來運行APP時。預設情況下,會使用 debug 配置來構建和運行你的應用。有時候如果有debug環境和release環境行為不同的情況,可以使用npx react-native run-android --variant=release來運行release環境調試

    • dependencies: 這部分包含了你的應用所需的所有依賴項,包括第三方套件。每當你使用 npm 或 yarn 安裝一個新的套件時,它的 Android 依賴通常會在這裡被添加。
    • versionName: 此部分表示你的應用的版本號。每次你更新應用並希望發布一個新版本到 Play Store 時,你會需要增加這個版本號。例如,versionName "1.0.0"
  • MainApplication.java
    路徑:android/app/src/main/java/[你的包名路徑]/MainApplication.java
    用途:當需要整合或橋接第三方原生模組時,你可能會修改這個文件,添加或初始化該模組。

  • strings.xml
    路徑:android/app/src/main/res/values/strings.xml
    用途:設定和修改應用的名稱、提示信息等。例如,要修改 APP 的名稱:

    <resources>
        <string name="app_name">YourAppName</string>
    </resources>
    
  • mipmap系列
    這些文件夾用於存放 APP 的啟動圖與ICON。
    用途:當需要更換 APP 的啟動圖標時會改到。你會發現有多個以 mipmap 開頭的文件夾,例如 mipmap-hdpi, mipmap-mdpi, mipmap-xhdpi, 等等。這些文件夾分別代表了不同的螢幕解析度。當你想要更改 APP 的 ICON 時,為了確保 ICON 在所有裝置上都看起來不錯,你需要為每個解析度提供一個相對應的圖標。

    這些ICON在 AndroidManifest.xml 文件中被引用,你可以在該文件的 android:icon 屬性中找到它們。

IOS 原生文件初探

  • info.plist
    iOS 應用的核心配置文件。以 XML 格式編寫,涵蓋多種設定,例如應用版本、顯示名稱、所需權限等。

  • AppDelegate.m / AppDelegate.h
    這是 iOS 應用的入口。這裡管理著應用的生命周期、初始化設定、與第三方庫的整合等。當結合 React Native 和原生模組時,你可能會修改這裡的代碼。

  • Assets.xcassets
    這是存放原生圖片和應用圖標的目錄。

  • Main.storyboard
    用於設計和預覽 iOS 應用的 GUI。用於需要自定義應用的啟動畫面或其它原生界面時。

  • Entitlements.plist
    用於配置應用的安全和權限設定,如推送通知、共享數據等。

不過在日常IOS開發中,我們也可以透過 Xcode 的 GUI 進行設定和更改。不一定要直接修改原生文件。

RN和原生組件對應關係

當我們使用RN的組件時,RN會根據當前的平台(iOS或Android)去呼叫對應的原生組件。
RN核心組件與原生組件對應關係圖
https://ithelp.ithome.com.tw/upload/images/20230925/20103365b9U4Bsix29.png
source

APP發布簡介

開發完成的APP和Web應用的發布流程有顯著差異。APP的發布,通常涉及到將其打包、簽名,並上傳到特定的應用商店。以下是APP發布時所需了解的一些基礎概念,之後會有更完整的介紹。

  • 應用包的類型

    • Debug包:在開發階段使用,讓開發者快速測試和調試。它通常不進行混淆,因此文件較大,且包含額外的調試信息。
    • Release包:當APP準備上架或發布給用戶時,我們會打包成Release包。這種包會經過混淆和優化,以減少包的大小和提高性能
  • 簽名
    為了確保應用的安全性和完整性,打包後的APP需要經過簽名流程。這個簽名過程不僅保證了應用的真實性,而且還避免了未經授權的篡改和冒名頂替。

    • Android:在Android上,我們使用keystore文件和對應的密碼進行簽名。更新APP時需要使用相同的簽名。
    • iOS:iOS,使用Xcode和Apple Developer帳號進行簽名。你需要一個有效的Provisioning Profile和一個與你的開發者帳號相關聯的證書。

上一篇
Day 9:React Native樣式與佈局
下一篇
Day 11:React Navigation 頁面導航與跳轉
系列文
30天React Native之旅:從入門到活用30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言